using Lzfy_Refund_Service.Models;

namespace Lzfy_Refund_Service.Services
{
    /// <summary>
    /// 用户修改日志服务接口
    /// </summary>
    public interface IUumUserModifyLogService
    {
        /// <summary>
        /// 创建用户修改日志
        /// </summary>
        /// <param name="request">创建请求</param>
        /// <returns>创建的记录ID</returns>
        Task<long> CreateAsync(UumUserModifyLogCreateRequest request);

        /// <summary>
        /// 根据ID获取用户修改日志
        /// </summary>
        /// <param name="id">日志ID</param>
        /// <returns>用户修改日志</returns>
        Task<UumUserModifyLog?> GetByIdAsync(long id);

        /// <summary>
        /// 分页查询用户修改日志
        /// </summary>
        /// <param name="request">查询请求</param>
        /// <returns>分页结果</returns>
        Task<UumUserModifyLogQueryResponse> GetPagedAsync(UumUserModifyLogQueryRequest request);

        /// <summary>
        /// 根据用户名获取修改日志
        /// </summary>
        /// <param name="userName">用户名</param>
        /// <returns>修改日志列表</returns>
        Task<IEnumerable<UumUserModifyLog>> GetByUserNameAsync(string userName);

        /// <summary>
        /// 根据修改用户名获取修改日志
        /// </summary>
        /// <param name="userNameModify">修改用户名</param>
        /// <returns>修改日志列表</returns>
        Task<IEnumerable<UumUserModifyLog>> GetByUserNameModifyAsync(string userNameModify);

        /// <summary>
        /// 获取最近的修改日志
        /// </summary>
        /// <param name="minutes">最近多少分钟</param>
        /// <returns>修改日志列表</returns>
        Task<IEnumerable<UumUserModifyLog>> GetRecentAsync(int minutes = 60);
    }
}